package service

import (
	"github.com/gogf/gf/net/ghttp"
	"quabg/app/model"
)

// Middleware 中间件管理服务
var Middleware = new(middlewareService)

type middlewareService struct{}

// Ctx 上下文对象提取. 这里初始化，jwt时进行认证
func (s *middlewareService) Ctx(r *ghttp.Request) {
	reqCtx := &model.Context{
		Session:    r.Session,
		ReqUserCtx: nil,
	}
	Context.Init(r, reqCtx) //在进行jwt认证时，会重新设置ReqUserCtx
	r.Middleware.Next()
}

// JwtAuth JWT 鉴权中间件，JWT+Token方式认证
func (s *middlewareService) JwtAuth(r *ghttp.Request) {
	if _, err := AuthHandler(r); err == nil {
		// 根据实际情况，处理Salt的核对
		// 这里暂不做处理
		r.Middleware.Next()
	} else {
		_ = r.Response.WriteJson(MakeJsonErr(err.Error()))
	}
}

// CORS 允许接口跨域请求
func (s *middlewareService) CORS(r *ghttp.Request) {
	r.Response.CORSDefault()
	r.Middleware.Next()
}
